﻿<!--
 * Copyright © 2013-2015 Vahid Jalili
 * 
 * This file is part of MuSERA project.
 * MuSERA is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation,
 * either version 3 of the License, or (at your option) any later version.
 * MuSERA is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 
 * PARTICULAR PURPOSE. See the GNU General Public License for more details.
 * You should have received a copy of the GNU General Public License along with Foobar. If not, see http://www.gnu.org/licenses/.
 *
-->
    
    <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

    <!-- All the following is required to Re-Style the ScrollViewer, see 
             http://msdn2.microsoft.com/en-us/library/aa970847(VS.85).aspx
             http://msdn2.microsoft.com/en-us/library/ms742173(VS.85).aspx
             for the default Stles that the ScrollViewer has out of the box
    -->

    <!-- Brushes used in Styling of ScrollViewer -->
    <SolidColorBrush x:Key="DisabledForegroundBrush" Color="White" />
    <SolidColorBrush x:Key="NormalBorderBrush" Color="White" />
    <SolidColorBrush x:Key="Repeatbars_Background" Color="Transparent" />
    <SolidColorBrush x:Key="GlyphBrush" Color="#FF3E3E3E" />
    <SolidColorBrush x:Key="Blue_Brush" Color="#FF32C8FF"/>
    <SolidColorBrush x:Key="SolidBorderBrush"/>
    <SolidColorBrush x:Key="Selected_Background_Brush" Color="OrangeRed" />
    <SolidColorBrush x:Key="DisabledBackgroundBrush" Color="#EEE" />
    <SolidColorBrush x:Key="DisabledBorderBrush" Color="#AAA" />

    <!--<SolidColorBrush x:Key="StandardBorderBrush" Color="#FF329BFF" />-->
    <!--<SolidColorBrush x:Key="NormalBrush" Color="#FF329BFF" />-->
    <!--<SolidColorBrush x:Key="HorizontalNormalBrush" Color="#FF309BFF" />-->
    <!--<SolidColorBrush x:Key="HorizontalNormalBorderBrush" Color="#FF309BFF" />-->
    <!--<SolidColorBrush x:Key="PressedBrush" Color="#FF309BFF"/>-->
    <SolidColorBrush x:Key="StandardBorderBrush" Color="White" />
    <SolidColorBrush x:Key="NormalBrush" Color="LightGray" />
    <SolidColorBrush x:Key="HorizontalNormalBrush" Color="LightGray" />
    <SolidColorBrush x:Key="HorizontalNormalBorderBrush" Color="White" />
    <SolidColorBrush x:Key="PressedBrush" Color="LightGray"/>



    <!-- SrollViewer ScrollBar Repeat Buttons (at each end) -->
    <Style x:Key="ScrollBarLineButton" TargetType="{x:Type RepeatButton}">
        <Setter Property="SnapsToDevicePixels" Value="True"/>
        <Setter Property="OverridesDefaultStyle" Value="true"/>
        <Setter Property="Focusable" Value="false"/>
        <Setter Property="Foreground" Value="White"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type RepeatButton}">
                    <Border
                            Name="Border"
                            Margin="1"
                            CornerRadius="1"
                            Background="{StaticResource Repeatbars_Background}"
                            BorderBrush="{StaticResource NormalBorderBrush}"
                            BorderThickness="0">

                        <Path
                                HorizontalAlignment="Center"
                                VerticalAlignment="Center"
                                Fill="{StaticResource GlyphBrush}"
                                Data="{Binding Path=Content, RelativeSource={RelativeSource TemplatedParent}}" />
                    </Border>

                    <ControlTemplate.Triggers>
                        <Trigger Property="IsPressed" Value="true">
                            <Setter TargetName="Border" Property="Background" Value="{StaticResource PressedBrush}" />
                        </Trigger>
                        <Trigger Property="IsEnabled" Value="false">
                            <Setter Property="Foreground" Value="{StaticResource DisabledForegroundBrush}"/>
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>


    <!-- SrollViewer ScrollBar Repeat Buttons (The part in the middle, 
             not the thumb the long area between the buttons ) -->
    <Style x:Key="ScrollBarPageButton" TargetType="{x:Type RepeatButton}">
        <Setter Property="SnapsToDevicePixels" Value="True"/>
        <Setter Property="OverridesDefaultStyle" Value="true"/>
        <Setter Property="IsTabStop" Value="false"/>
        <Setter Property="Focusable" Value="false"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type RepeatButton}">
                    <Border Background="Transparent" />
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>


    <!-- ScrollViewer ScrollBar Thumb, that part that can be dragged
            up/down or left/right Buttons -->
    <Style x:Key="ScrollBarThumb" TargetType="{x:Type Thumb}">
        <Setter Property="SnapsToDevicePixels" Value="True"/>
        <Setter Property="OverridesDefaultStyle" Value="true"/>
        <Setter Property="IsTabStop" Value="false"/>
        <Setter Property="Focusable" Value="false"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type Thumb}">
                    <Border
                            CornerRadius="1"
                            Background="{TemplateBinding Background}"
                            BorderBrush="{TemplateBinding BorderBrush}"
                            BorderThickness="1" />
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>


    <ControlTemplate x:Key="VerticalScrollBar" TargetType="{x:Type ScrollBar}">
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition MaxHeight="18"/>
                <RowDefinition Height="0.00001*"/>
                <RowDefinition MaxHeight="18"/>
            </Grid.RowDefinitions>
            <Border
                    Grid.RowSpan="3"
                    CornerRadius="2"
                    Background= "Transparent"/>
            <!--"#FF309BFF" />-->

            <RepeatButton
                    Grid.Row="0"
                    Style="{StaticResource ScrollBarLineButton}"
                    Height="18"
                    Command="ScrollBar.LineUpCommand"
                    Content="M 0 4 L 8 4 L 4 0 Z" />
            <Track
                    Name="PART_Track"
                    Grid.Row="1"
                    IsDirectionReversed="True">
                <Track.DecreaseRepeatButton>
                    <RepeatButton
                            Style="{StaticResource ScrollBarPageButton}"
                            Command="ScrollBar.PageUpCommand" />
                </Track.DecreaseRepeatButton>
                <Track.Thumb>
                    <Thumb
                            Style="{StaticResource ScrollBarThumb}"
                            Margin="1,0,1,0"
                            Background="{StaticResource HorizontalNormalBrush}"
                            BorderBrush="{StaticResource HorizontalNormalBorderBrush}" />
                </Track.Thumb>

                <Track.IncreaseRepeatButton>
                    <RepeatButton
                            Style="{StaticResource ScrollBarPageButton}"
                            Command="ScrollBar.PageDownCommand" />
                </Track.IncreaseRepeatButton>
            </Track>
            <RepeatButton
                    Grid.Row="3"
                    Style="{StaticResource ScrollBarLineButton}"
                    Height="18"
                    Command="ScrollBar.LineDownCommand"
                    Content="M 0 0 L 4 4 L 8 0 Z"/>
        </Grid>
    </ControlTemplate>


    <!-- HorizontalScrollBar Template using the previously created Templates -->
    <ControlTemplate x:Key="HorizontalScrollBar" TargetType="{x:Type ScrollBar}">
        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition MaxWidth="18"/>
                <ColumnDefinition Width="0.00001*"/>
                <ColumnDefinition MaxWidth="18"/>
            </Grid.ColumnDefinitions>
            <Border Grid.ColumnSpan="3" CornerRadius="2" Background="Transparent" />

            <RepeatButton
                    Grid.Column="0"
                    Style="{StaticResource ScrollBarLineButton}"
                    Width="18"
                    Command="ScrollBar.LineLeftCommand"
                    Content="M 4 0 L 4 8 L 0 4 Z" />

            <Track Name="PART_Track" Grid.Column="1" IsDirectionReversed="False">
                <Track.DecreaseRepeatButton>
                    <RepeatButton
                            Style="{StaticResource ScrollBarPageButton}"
                            Command="ScrollBar.PageLeftCommand" />
                </Track.DecreaseRepeatButton>

                <Track.Thumb>
                    <Thumb
                            Style="{StaticResource ScrollBarThumb}"
                            Margin="0,1,0,1"
                            Background="{StaticResource NormalBrush}"
                            BorderBrush="{StaticResource NormalBorderBrush}" />
                </Track.Thumb>

                <Track.IncreaseRepeatButton>
                    <RepeatButton
                            Style="{StaticResource ScrollBarPageButton}"
                            Command="ScrollBar.PageRightCommand" />
                </Track.IncreaseRepeatButton>
            </Track>

            <RepeatButton
                    Grid.Column="3"
                    Style="{StaticResource ScrollBarLineButton}"
                    Width="18"
                    Command="ScrollBar.LineRightCommand"
                    Content="M 0 0 L 4 4 L 0 8 Z"/>

        </Grid>
    </ControlTemplate>


    <!-- Style for overall  ScrollBar -->
    <Style x:Key="{x:Type ScrollBar}" TargetType="{x:Type ScrollBar}">
        <Setter Property="SnapsToDevicePixels" Value="True"/>
        <Setter Property="OverridesDefaultStyle" Value="true"/>
        <Style.Triggers>
            <Trigger Property="Orientation" Value="Horizontal">
                <Setter Property="Width" Value="Auto"/>
                <Setter Property="Height" Value="18" />
                <Setter Property="Template"
                        Value="{StaticResource HorizontalScrollBar}" />
            </Trigger>
            <Trigger Property="Orientation" Value="Vertical">
                <Setter Property="Width" Value="18"/>
                <Setter Property="Height" Value="Auto" />
                <Setter Property="Template"
                        Value="{StaticResource VerticalScrollBar}" />
            </Trigger>
        </Style.Triggers>
    </Style>


    <!-- Style for overall  ScrollViewer -->
    <Style x:Key="FavsScrollViewer" TargetType="{x:Type ScrollViewer}">
        <Setter Property="OverridesDefaultStyle" Value="True"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type ScrollViewer}">
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="Auto"/>
                            <ColumnDefinition/>
                        </Grid.ColumnDefinitions>
                        <Grid.RowDefinitions>
                            <RowDefinition/>
                            <RowDefinition Height="Auto"/>
                        </Grid.RowDefinitions>

                        <ScrollContentPresenter Grid.Column="1"/>

                        <ScrollBar Name="PART_VerticalScrollBar"
                                       Value="{TemplateBinding VerticalOffset}"
                                       Maximum="{TemplateBinding ScrollableHeight}"
                                       ViewportSize="{TemplateBinding ViewportHeight}"
                                       Visibility="{TemplateBinding ComputedVerticalScrollBarVisibility}"/>


                        <ScrollBar Name="PART_HorizontalScrollBar"
                                       Orientation="Horizontal"
                                       Grid.Row="1"
                                       Grid.Column="1"
                                       Value="{TemplateBinding HorizontalOffset}"
                                       Maximum="{TemplateBinding ScrollableWidth}"
                                       ViewportSize="{TemplateBinding ViewportWidth}"
                                       Visibility="{TemplateBinding ComputedHorizontalScrollBarVisibility}"/>

                    </Grid>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>





    <!--DELETE THESE-->
    <Style x:Key="DataGridCenterCenterCells" TargetType="{x:Type DataGridCell}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type DataGridCell}">
                    <Grid Background="{TemplateBinding Background}">
                        <ContentPresenter VerticalAlignment="Center" />
                    </Grid>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
        <Setter Property="TextBlock.TextAlignment" Value="Center"/>
    </Style>
    <Style x:Key="DataGridCenterLeftCells" TargetType="{x:Type DataGridCell}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type DataGridCell}">
                    <Grid Background="{TemplateBinding Background}">
                        <ContentPresenter VerticalAlignment="Center" />
                    </Grid>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
        <Setter Property="TextBlock.TextAlignment" Value="Left"/>
    </Style>
    <Style x:Key="DataGridCenterRightCells" TargetType="{x:Type DataGridCell}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type DataGridCell}">
                    <Grid Background="{TemplateBinding Background}">
                        <ContentPresenter VerticalAlignment="Center" />
                    </Grid>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
        <Setter Property="TextBlock.TextAlignment" Value="Right"/>
    </Style>
</ResourceDictionary>